package com.travelsmart.client.apresentacao.controller;


/**
 * Observer
 * "Definir uma dependência um-para-muitos entre objetos
 * para que quando um objeto mudar de estado, todos os seus
 * dependentes sejam notificados e atualizados
 * automaticamente." [GoF]
 * 
 * 
 * Nosso Observer<E> (no nosso caso, são as views) representa o objeto que deve 
 * ser notificado quando o estado do objeto observado (model)
 * muda 
 * 
 * @author arthur
 *
 * @param <E>
 */
public interface Observer<E> {
	 /**
     * This method is called whenever the observed object is changed. An
     * application calls an <tt>Observable</tt> object's
     * <code>notifyObservers</code> method to have all the object's
     * observers notified of the change.
     *
     * @param   arg   an argument passed to the <code>notifyObservers</code>
     *                 method.
     */
    void update(E arg);
}
